/**   
 * @Title: TableController.java 
 * @Package org.playgod1984.du.ddesign.controller 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author playgod playgod1984@163.com  
 * @date 2014年10月27日 下午5:03:18 
 * @version V1.0   
 */
package org.playgod1984.du.ddesign.controller;

import java.util.List;
import java.util.Map;

import org.playgod1984.du.base.ApplicationController;
import org.playgod1984.du.ddesign.model.Field;
import org.playgod1984.du.ddesign.model.Table;

import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;

/** 
 * @ClassName: TableController 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author playgod playgod1984@163.com 
 * @date 2014年10月27日 下午5:03:18 
 *  
 */
public class TableController extends ApplicationController {
	/**
	 * @Title: pagenate
	 * @author:playgod playgod1984@163.com 
	 * @Description: 表格分页
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void pagenate(){
		Map params = getParamsMap();// get
		// Query All Project
		Table tl = getModel(Table.class);
		Page<Table> tableList = tl.getTablesWithPagenate(params);
		//Map whereMap = getDataGridFilter();
		renderJson("Rows", tableList.getList());
	}
	/**
	 * @Title: g2add
	 * @author:playgod playgod1984@163.com 
	 * @Description: 添加
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void g2add(){
		setAttr("screen", "A");// add
		Record r = Table.dao.findPD(getPara("diagramid"));
		setAttr("r", r);
		render("/WEB-INF/views/ddesign/table/table_edit.html");
	}
	/**
	 * @Title: g2edit
	 * @author:playgod playgod1984@163.com 
	 * @Description: 编辑
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void g2edit(){
		Table tbl = Table.dao.findById(getPara("tableid"));
		Record r = Table.dao.findPD(tbl.getStr("diagramid"));
		setAttr("screen", "E");// add
		setAttr("r", r);
		setAttr("tbl",tbl);
		setAttr("tableid",tbl.getStr("tableid"));// 编辑时添加隐藏列
		render("/WEB-INF/views/ddesign/table/table_edit.html");
	}
	/**
	 * @Title: save
	 * @author:playgod playgod1984@163.com 
	 * @Description: 保存 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void save(){
		Map params = getParamsMap();
		// 返回成功的表ID，失败后为"";
		String tableid = Table.dao.save(params);
		renderJson("tableid", tableid);		
	}
	/**
	 * @Title: delete
	 * @author:playgod playgod1984@163.com 
	 * @Description: 删除
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void delete(){
		Map params = getParamsMap();
		int delRes = Table.dao.deleteRows(params);
		renderJson(delRes);
	}
	/**
	 * @Title: relation
	 * @author:playgod playgod1984@163.com 
	 * @Description: 关系表
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void relation(){
		Map params = getParamsMap();// get
		Table t = getModel(Table.class);
		Page<Record> relationList = t.getRelationTable(params);
		//Map whereMap = getDataGridFilter();
		renderJson("Rows", relationList.getList());
	}
	
	/**
	 * @Title: g2editrelation
	 * @author:playgod playgod1984@163.com 
	 * @Description: 添加关系 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void g2editrelation(){
		Map params = getParamsMap();
		setAttr("tableid",getPara("tableid"));// 编辑时添加隐藏列
		setAttr("screen", "A");// add
		// 获取本表字段
		Table t = getModel(Table.class);
		List<Record> fields = t.getFieldList(params);
		List<Record> tables = t.getTablesList(params);
		setAttr("fields", fields);
		setAttr("tables", tables);
		// 获取本表以外的表
		render("/WEB-INF/views/ddesign/table/table_relation.html");
	}
	/**
	 * @Title: saveRelation
	 * @author:playgod playgod1984@163.com 
	 * @Description: 保存关系表 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void saveRelation(){
		Map params = getParamsMap();// get
		// Query All Project
		Table t = getModel(Table.class);
		String relationid = t.saveRelation(params);
		if(!"".equals(relationid)){
			renderJson(RES_SUCCESS);
		}else{
			renderJson(RES_FAILED);
		}	
	}
	/**
	 * @Title: gettableField
	 * @author:playgod playgod1984@163.com 
	 * @Description: 获取表字段 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void gettableField(){
		Map params = getParamsMap();
		Table t = getModel(Table.class);
		List<Record> fields = t.getFieldList(params);
		renderJson(fields);
	}
	/**
	 * @Title: deleteRelation
	 * @author:playgod playgod1984@163.com 
	 * @Description: 删除关系
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	public void deleteRelation(){
		Map params = getParamsMap();
		int delRes = Table.dao.deleteRelation(params);
		renderJson(delRes);
	}
}
